<?php

/**
 * @author juanma
 * @copyright 2008
 */



class Sgit_Navigation{
    protected   $_data=array();
    protected   $_zonas=array(1=>'Barcelona',2=>'Lisboa',3=>'Madrid 1',4=>'Madrid 2',6=>'Sevilla');

        
    public function __construct()
    {
        $this->_data[]=$this->login();
        $this->_data[]=$this->viriathus();
        
        

    }
    


    
    function login()
    {

        $_data=$this->addpage('Login','login','login',null,'login');
        
        $_data['pages'][]=$this->addpage('Entrar','login','login:index');
        $_data['pages'][]=$this->addpage('Salir','login','login:logout','logout');


        return $_data;
    }
    


    function viriathus()
    {
        $_data=$this->addpage('Home','index','index:index','index',null,array('c'=>''));
        
        
        foreach($this->_zonas as $k => $v){
            $_data['pages'][]=$this->home($k);
        }
        
        $_data['pages'][]=$this->facilities_general();
        $_data['pages'][]=$this->aplicacion();
        $_data['pages'][]=$this->home_despliegue();

        //Otros
        $_data['pages'][]=$this->addpage('Bitacora','bitacora','bitacora:index');
        $_data['pages'][]=$this->addpage('Otros','otros','otros:index');
        $_data['pages'][]=$this->addpage('Acceso a Informes','otros','otros:publico','publico');
        $_data['pages'][]=$this->addpage('Aplicaciones Externas','otros','otros:externas','externas');


        return $_data;
    }
    
    
    
    
    
    
   
    
    function home($id_zona)
    {

       $_data=$this->addpage($this->_zonas[$id_zona],'viriathus',"viriathus:index:$id_zona",null,null,array('idZona'=>$id_zona));

       $_data['pages'][]=$this->home_colocation($id_zona);
       $_data['pages'][]=$this->home_facility($id_zona);
       $_data['pages'][]=$this->home_power($id_zona);
       $_data['pages'][]=$this->home_data($id_zona);
       $_data['pages'][]=$this->home_mantenimiento($id_zona);

        
       return $_data;
    }
    
    
    
   function facilities_general()
   {

       $_data=$this->addpage('General Facility Management','otros','otros:facilities','facilities');
      
       $_data['pages'][]=$this->proyectosdc();
       $_data['pages'][]=$this->proyectosdc_capex();
       $_data['pages'][]=$this->ofertas();

       
       
       $level_2=$this->addpage('Costes Estrucutura','control-economico',"control-economico:alojamiento:50",'alojamiento',null,array('idZona'=>50));
       $level_2['pages'][]=$this->addpage('Informe Económico Costes Estrucutura','cuentas-alojamiento',"cuentas-alojamiento:index:50",'index',null,array('idZona'=>50));
       $level_2['pages'][]=$this->addpage('Registro Avance Costes Estrucutura','cuentas-alojamiento',"cuentas-alojamiento:avance:50",'avance',null,array('idZona'=>50));
       $level_2['pages'][]=$this->addpage('Registro Plan Costes Estrucutura','cuentas-alojamiento',"cuentas-alojamiento:plan:50",'plan',null,array('idZona'=>50));
       $_data['pages'][]=$level_2;
       
       $_data['pages'][]=$this->addpage('Informe Costes Alojamiento España','cuentas-alojamiento','cuentas-alojamiento:index:10','index',null,array('idZona'=>10));
       $_data['pages'][]=$this->addpage('Informe Costes Electricidad España','cuentas-electricidad','cuentas-electricidad:index:10','index',null,array('idZona'=>10));
       $_data['pages'][]=$this->addpage('Informe Costes Comunicaciones España','cuentas-mmr','cuentas-mmr:index:10','index',null,array('idZona'=>10));
       $_data['pages'][]=$this->addpage('Seguimiento Costes España','cuentas-all','cuentas-all:index:10','index',null,array('idZona'=>10));
      
       $_data['pages'][]=$this->addpage('Informe Costes Alojamiento Iberia','cuentas-alojamiento','cuentas-alojamiento:index:18','index',null,array('idZona'=>18));
       $_data['pages'][]=$this->addpage('Informe Costes Electricidad Iberia','cuentas-electricidad','cuentas-electricidad:index:18','index',null,array('idZona'=>18));
       $_data['pages'][]=$this->addpage('Informe Costes Comunicaciones Iberia','cuentas-mmr','cuentas-mmr:index:18','index',null,array('idZona'=>18));
       $_data['pages'][]=$this->addpage('Seguimiento Costes Iberia','cuentas-all','cuentas-all:index:18','index',null,array('idZona'=>18));
      
       return $_data;
    }
  
  
  
     function home_despliegue()
    {
    
        $_data=$this->addpage('Despliegue IT','viriathus',"viriathus:despliegue:49",'despliegue',null,array('idZona'=>49));

        $_data['pages'][]=$this->addpage('Control Económico Registro Avance','cuentas-despliegue','cuentas-despliegue:avance:49','avance',null,array('idZona'=>49));
        $_data['pages'][]=$this->addpage('Informe Económico','cuentas-despliegue','cuentas-despliegue:index:49','index',null,array('idZona'=>49));

        return $_data;
    }
    
    
    
    function home_colocation($id_zona)
    {
      
        $level_2=$this->addpage('Control Económico','control-economico',"control-economico:alojamiento:$id_zona",'alojamiento',null,array('idZona'=>$id_zona));
        $level_2['pages'][]=$this->addpage('Informe Económico Alojamiento','cuentas-alojamiento',"cuentas-alojamiento:index:$id_zona",'index',null,array('idZona'=>$id_zona));
        $level_2['pages'][]=$this->addpage('Registro Avance Alojamiento','cuentas-alojamiento',"cuentas-alojamiento:avance:$id_zona",'avance',null,array('idZona'=>$id_zona));
        $level_2['pages'][]=$this->addpage('Registro Plan Alojamiento','cuentas-alojamiento',"cuentas-alojamiento:plan:$id_zona",'plan',null,array('idZona'=>$id_zona));
        

        $level_1=$this->addpage('Colocation','colocation',"colocation:index:$id_zona",'index',null,array('idZona'=>$id_zona));
        $level_1['pages'][]=$level_2;
        
        return $level_1;
    }
    

    function home_mantenimiento($id_zona)
    {
        $_data=$this->addpage('Mantenimiento','maintenance',"maintenance:index:$id_zona",'index',null,array('idZona'=>$id_zona));
       // $_data['pages'][]=$this->home_colocation_costcontrolalojamiento($id_zona);
        $_data['pages'][]=$this->adduri('CMI & Objetivos','Cmi_Alojamiento',$id_zona);
        return $_data;
    }
    
    
    
    function home_facility($id_zona)
    {

        $params=array('idZona'=>$id_zona);
        
        $_data=$this->addpage('Facility Management','facility-management',"facility-management:index:$id_zona",'index',null,$params);
        $_data['pages'][]=$this->addpage('Control Económico','cuentas-all','cuentas-all:index:'.$id_zona,'index',null,$params);
        $_data['pages'][]=$this->adduri('CMI & Objetivos','Cmi_Alojamiento',$id_zona);
        
        return $_data;
    }
    
    

    
    
     

    function home_power($id_zona)
    {
        

        
        $level_2_1=$this->addpage('Control Económico','control-economico',"control-economico:electricidad:$id_zona",'electricidad',null,array('idZona'=>$id_zona));
        $level_2_1['pages'][]=$this->addpage('Informe Económico','cuentas-electricidad',"cuentas-electricidad:index:$id_zona",'index',null,array('idZona'=>$id_zona));
        $level_2_1['pages'][]=$this->addpage('Registro Avance','cuentas-electricidad',"cuentas-electricidad:avance:$id_zona",'avance',null,array('idZona'=>$id_zona));
        $level_2_1['pages'][]=$this->addpage('Registro Plan','cuentas-electricidad',"cuentas-electricidad:plan:$id_zona",'plan',null,array('idZona'=>$id_zona));
        
        $level_2_2=$this->addpage('PUE','pues',"pues:acumulado:$id_zona",'acumulado',null,array('idZona'=>$id_zona));


        $level_1=$this->addpage('Power & Cooling','power-cooling',"power-cooling:index:$id_zona",'index',null,array('idZona'=>$id_zona));
        $level_1['pages'][]=$level_2_1;
        $level_1['pages'][]=$level_2_2;
        
        return $level_1;
        
        
        
    }
    
    
    function home_data($id_zona)
    {
     

        $level_2=$this->addpage('Control Económico','control-economico',"control-economico:mmr:$id_zona",'mmr',null,array('idZona'=>$id_zona));
        $level_2['pages'][]=$this->addpage('Informe Económico','cuentas-mmr',"cuentas-mmr:index:$id_zona",'index',null,array('idZona'=>$id_zona));
        $level_2['pages'][]=$this->addpage('Registro Avance','cuentas-mmr',"cuentas-mmr:avance:$id_zona",'avance',null,array('idZona'=>$id_zona));
        $level_2['pages'][]=$this->addpage('Registro Plan','cuentas-mmr',"cuentas-mmr:plan:$id_zona",'plan',null,array('idZona'=>$id_zona));
        

        $level_1=$this->addpage('Data & Telco','data-telco',"data-telco:index:$id_zona",'index',null,array('idZona'=>$id_zona));
        $level_1['pages'][]=$level_2;
        
        return $level_1;
  
    }
    
    
    
    function cost_control_alojamiento($id_zona)
    {
        $params=array('idZona'=>$id_zona);
        $_data=$this->addpage('Control Económico Alojamiento','control-economico',"control-economico:alojamiento:$id_zona",'alojamiento',null,$params);
        
        $_data['pages'][]=$this->addpage('Informe Costes Alojamiento','cuentas-alojamiento','cuentas-alojamiento:index:'.$id_zona,'index',null,$params);
        $_data['pages'][]=$this->addpage('Registro Plan Alojamiento','cuentas-alojamiento','cuentas-alojamiento:plan:'.$id_zona,'plan',null,$params);
        $_data['pages'][]=$this->addpage('Registro Avance Alojamiento','cuentas-alojamiento','cuentas-alojamiento:avance:'.$id_zona,'avance',null,$params);

        return $_data;
    }
    
    function proyectosdc()
    {

       $_data=$this->addpage('Proyectos DC','proyectosdc',"proyectosdc:index",'index');
       $_data['pages'][]=$this->addpage('Proyecto','proyectosdc-post',"proyectosdc-post:index",'index');

       return $_data;
    }
    
    function ofertas()
    {

       $_data=$this->addpage('Ofertas','ofertas',"ofertas:index",'index');
       $_data['pages'][]=$this->addpage('Oferta','ofertas-post',"ofertas-post:index",'index');

       return $_data;
    }
    
    
    function proyectosdc_capex()
    {
       $_data=$this->addpage('Seguimiento CAPEX','proyectosdc-capex',"proyectosdc-capex:index",'index');
       $_data['pages'][]=$this->addpage('CAPEX Proyecto','proyectosdc-capex-detalle',"proyectosdc-capex-detalle:index",'index');
       return $_data;
    }


    function aplicacion()
    {
        $_data=$this->addpage('Administración Aplicación','gestion-aplicacion','gestion-aplicacion:index',null,'aplicacion');
        
        $_data['pages'][]=$this->addpage('Gestión Usuarios','usuario','usuario:index');
        $_data['pages'][]=$this->addpage('Gestión Centros','datacenter','datacenter:index');
        $_data['pages'][]=$this->addpage('Gestión Permisos','acceso','acceso:index');
        $_data['pages'][]=$this->addpage('Gestión Clientes','clientes','clientes:index');
        $_data['pages'][]=$this->addpage('Gestión Grupos','grupos','grupos:index');
        
        $_data['pages'][]=$this->adduri('Permisos a páginas','Administracion_PermisosPaginas',$k);
        $_data['pages'][]=$this->adduri('Permisos a acciones','Administracion_PermisosAcciones',$k);
        $_data['pages'][]=$this->adduri('Accesos','Administracion_Accesos',$k);
        $_data['pages'][]=$this->adduri('Log de actividades','Administracion_Logs',$k);
        
        $_data['pages'][]=$this->adduri('Alertas','Administracion_Alertas',$k);
        $_data['pages'][]=$this->adduri('Clases de Sistemas','Explotacion_ClaseSistema',$k);
        $_data['pages'][]=$this->adduri('Formas de Pago','Administracion_FormaPago',$k);
        $_data['pages'][]=$this->adduri('Tipos de Facturación Eléctrica','Administracion_TiposFacturacion',$k);
        $_data['pages'][]=$this->adduri('Tipos de Servicio','Administracion_TipoServicio',$k);
        $_data['pages'][]=$this->adduri('Archivos','Administracion_Archivos',$k);

        return $_data;
    }
    



    
    public function addpage($label,$controller=null,$resource=null,$action=null,$id=null,$param=null,$other=array())
    {
        if($label)$page['label']=$label;
        if(!is_null($controller))$page['controller']=$controller;
        if(!is_null($resource))$page['resource']=$resource;
        if(!is_null($resource))$page['id']=$resource;
        if(!is_null($id))$page['id']=$id;
        if(!is_null($action))$page['action']=$action;
        if(!is_null($param))$page['params']=$param;
        
        if($other){
            foreach($other as $k=>$v) $page[$k]=$v;
        }
        
        return $page;
    }
    
    public function addpageZona($idZona,$label,$controller=null,$resource=null,$action=null,$id=null,$param=null,$other=array())
    {
        $parametros['idZona']=$idZona;
        
        if($params) $params=array_merge($parametros,$params);
        
        if($label)$page['label']=$label;
        if(!is_null($controller))$page['controller']=$controller;
        if(!is_null($resource))$page['resource']=$resource.":$idZona";
        if(!is_null($resource))$page['id']=$resource.":$idZona";
        if(!is_null($id))$page['id']=$id;
        if(!is_null($action))$page['action']=$action;
        if(!is_null($param))$page['params']=$param;
        
        if($other){
            foreach($other as $k=>$v) $page[$k]=$v;
        }
        
        return $page;
    }
    
    
    
    
    public function adduri($label,$modulo,$idZona=null)
    {
        $page['label']=$label;
        $uri="index.php?modulo=$modulo";
        if(!is_null($idZona)) $uri.="&idZona=$idZona";
        $page['uri']=$uri;
        return $page;
    }
    
    public function addurl($label,$url)
    {
        $page['label']=$label;
        $page['uri']=$url;
        return $page;
    }   
    
    
    
    public function toArray()
    {
        $array = array();
        $data = $this->_data;
        foreach ($data as $key => $value) {
            $array[$key] = $value;
        }
        return $array;
    }
    

}